package com.yeren.thread.changeState.join;
/**
 * join就是阻塞调用线程，直到该线程结束后，调用线程才能继续执行。
 * 该影响只存在于执行join方法的线程和调用该线程的线程之间
 * 如在t1线程中调用t2.join(),则需要t2线程执行完后t1方能继续执行
 * 
 */
public class TestJoin {
	public static void main(String[] args) {
		Thread t1 = new MyThreadJoin();
		t1.start();

		for (int i = 0; i < 20; i++) {
			System.out.println("主线程第" + i + "次执行！");
			if (i > 2){
				try {
					// t1线程合并到主线程中，主线程停止执行过程，转而执行t1线程，直到t1执行完毕后继续。
					t1.join();
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

class MyThreadJoin extends Thread {
	public void run() {
		for (int i = 0; i < 10; i++) {
			System.out.println("===线程1第" + i + "次执行！====");
		}
	}
}